home *** CD-ROM | disk | FTP | other *** search
-
-
-
- IMAKE User Commands IMAKE
-
-
-
- NNAAMMEE
- imake - C preprocessor interface to the make utility
-
- SSYYNNOOPPSSIISS
- iimmaakkee [ --DD_d_e_f_i_n_e ] [ --II_d_i_r ] [ --TT_t_e_m_p_l_a_t_e ] [ --ff _f_i_l_e_n_a_m_e ]
- [ --ss _f_i_l_e_n_a_m_e ] [ --ee ] [ --vv ]
-
- DDEESSCCRRIIPPTTIIOONN
- _I_m_a_k_e is used to generate _M_a_k_e_f_i_l_e_s from a template, a set
- of _c_p_p macro functions, and a per-directory input file
- called an _I_m_a_k_e_f_i_l_e. This allows machine dependencies (such
- has compiler options, alternate command names, and special
- _m_a_k_e rules) to be kept separate from the descriptions of the
- various items to be built.
-
- OOPPTTIIOONNSS
- The following command line options may be passed to _i_m_a_k_e:
-
- --DD_d_e_f_i_n_e
- This option is passed directly to _c_p_p. It is typi-
- cally used to set directory-specific variables. For
- example, the X Window System uses this flag to set
- _T_O_P_D_I_R to the name of the directory containing the
- top of the core distribution and _C_U_R_D_I_R to the name
- of the current directory, relative to the top.
-
- --II_d_i_r_e_c_t_o_r_y
- This option is passed directly to _c_p_p. It is typi-
- cally used to indicate the directory in which the
- _i_m_a_k_e template and configuration files may be found.
-
- --TT_t_e_m_p_l_a_t_e
- This option specifies the name of the master tem-
- plate file (which is usually located in the direc-
- tory specified with -_I) used by _c_p_p. The default is
- _I_m_a_k_e._t_m_p_l.
-
- --ff _f_i_l_e_n_a_m_e
- This option specifies the name of the per-directory
- input file. The default is _I_m_a_k_e_f_i_l_e.
-
- --ss _f_i_l_e_n_a_m_e
- This option specifies the name of the _m_a_k_e descrip-
- tion file to be generated but _m_a_k_e should not be
- invoked. If the _f_i_l_e_n_a_m_e is a dash (-), the output
- is written to _s_t_d_o_u_t. The default is to generate,
- but not execute, a _M_a_k_e_f_i_l_e.
-
- --ee This option indicates the _i_m_a_k_e should execute the
- generated _M_a_k_e_f_i_l_e. The default is to leave this to
- the user.
-
-
-
-
- X Version 11 Release 5 1
-
-
-
-
-
-
- IMAKE User Commands IMAKE
-
-
-
- --vv This option indicates that _i_m_a_k_e should print the
- _c_p_p command line that it is using to generate the
- _M_a_k_e_f_i_l_e.
-
- HHOOWW IITT WWOORRKKSS
- _I_m_a_k_e invokes _c_p_p with any -_I or -_D flags passed on the com-
- mand line and passes it the following 3 lines:
-
- #define IMAKE_TEMPLATE "Imake.tmpl"
- #define INCLUDE_IMAKEFILE "Imakefile"
- #include IMAKE_TEMPLATE
-
- where _I_m_a_k_e._t_m_p_l and _I_m_a_k_e_f_i_l_e may be overridden by the -_T
- and -_f command options, respectively.
-
- The IMAKE_TEMPLATE typically reads in a file containing
- machine-dependent parameters (specified as _c_p_p symbols), a
- site-specific parameters file, a file defining variables, a
- file containing _c_p_p macro functions for generating _m_a_k_e
- rules, and finally the _I_m_a_k_e_f_i_l_e (specified by
- INCLUDE_IMAKEFILE) in the current directory. The _I_m_a_k_e_f_i_l_e
- uses the macro functions to indicate what targets should be
- built; _i_m_a_k_e takes care of generating the appropriate rules.
-
- _I_m_a_k_e configuration files contain two types of variables,
- imake variables and make variables. The imake variables are
- interpreted by cpp when _i_m_a_k_e is run. By convention they
- are mixed case. The make variables are written into the
- _M_a_k_e_f_i_l_e for later interpretation by _m_a_k_e. By convention
- make variables are upper case.
-
- The rules file (usually named _I_m_a_k_e._r_u_l_e_s in the configura-
- tion directory) contains a variety of _c_p_p macro functions
- that are configured according to the current platform.
- _I_m_a_k_e replaces any occurrences of the string ``@@'' with a
- newline to allow macros that generate more than one line of
- _m_a_k_e rules. For example, the macro
-
- #define program_target(program, objlist) @@\
- program: objlist @@\
- $(CC) -o $@ objlist $(LDFLAGS)
-
- when called with _p_r_o_g_r_a_m__t_a_r_g_e_t(_f_o_o, _f_o_o_1._o _f_o_o_2._o) will
- expand to
-
- foo: foo1.o foo2.o
- $(CC) -o $@ foo1.o foo2.o $(LDFLAGS)
-
-
- On systems whose _c_p_p reduces multiple tabs and spaces to a
- single space, _i_m_a_k_e attempts to put back any necessary tabs
- (_m_a_k_e is very picky about the difference between tabs and
-
-
-
- X Version 11 Release 5 2
-
-
-
-
-
-
- IMAKE User Commands IMAKE
-
-
-
- spaces). For this reason, colons (:) in command lines must
- be preceded by a backslash (\).
-
- UUSSEE WWIITTHH TTHHEE XX WWIINNDDOOWW SSYYSSTTEEMM
- The X Window System uses _i_m_a_k_e extensively, for both full
- builds within the source tree and external software. As
- mentioned above, two special variables, _T_O_P_D_I_R and _C_U_R_D_I_R,
- are set to make referencing files using relative path names
- easier. For example, the following command is generated
- automatically to build the _M_a_k_e_f_i_l_e in the directory _l_i_b/_X/
- (relative to the top of the sources):
-
- % ../.././config/imake -I../.././config \
- -DTOPDIR=../../. -DCURDIR=./lib/X
-
- When building X programs outside the source tree, a special
- symbol _U_s_e_I_n_s_t_a_l_l_e_d is defined and _T_O_P_D_I_R and _C_U_R_D_I_R are
- omitted. If the configuration files have been properly
- installed, the script _x_m_k_m_f(1) may be used.
-
- IINNPPUUTT FFIILLEESS
- Here is a summary of the files read by _i_m_a_k_e as used by X.
- The indentation shows what files include what other files.
-
- Imake.tmpl generic variables
- site.def site-specific, BeforeVendorCF defined
- *.cf machine-specific
- *Lib.rules shared library rules
- site.def site-specific, AfterVendorCF defined
- Project.tmpl X-specific variables
- *Lib.tmpl shared library variables
- Imake.rules rules
- Imakefile
- Library.tmpl library rules
- Server.tmpl server rules
-
- Note that _s_i_t_e._d_e_f gets included twice, once before the *._c_f
- file and once after. Although most site customizations
- should be specified after the *._c_f file, some, such as the
- choice of compiler, need to be specified before, because
- other variable settings may depend on them.
-
- The first time _s_i_t_e._d_e_f is included, the variable BeforeVen-
- dorCF is defined, and the second time, the variable After-
- VendorCF is defined. All code in _s_i_t_e._d_e_f should be inside
- an #ifdef for one of these symbols.
-
- FFIILLEESS
- /usr/tmp/tmp-imake._n_n_n_n_n_n temporary input file for cpp
- /usr/tmp/tmp-make._n_n_n_n_n_n temporary input file for make
- /lib/cpp default C preprocessor
-
-
-
-
- X Version 11 Release 5 3
-
-
-
-
-
-
- IMAKE User Commands IMAKE
-
-
-
- SSEEEE AALLSSOO
- make(1), xmkmf(1)
- S. I. Feldman, _M_a_k_e - _A _P_r_o_g_r_a_m _f_o_r _M_a_i_n_t_a_i_n_i_n_g _C_o_m_p_u_t_e_r
- _P_r_o_g_r_a_m_s
-
- EENNVVIIRROONNMMEENNTT VVAARRIIAABBLLEESS
- The following environment variables may be set, however
- their use is not recommended as they introduce dependencies
- that are not readily apparent when _i_m_a_k_e is run:
-
- IIMMAAKKEEIINNCCLLUUDDEE
- If defined, this should be a valid include argument for
- the C preprocessor. E.g., ``-I/usr/include/local''.
- Actually, any valid _c_p_p argument will work here.
-
- IIMMAAKKEECCPPPP
- If defined, this should be a valid path to a preproces-
- sor program. E.g. ``/usr/local/cpp''. By default,
- _i_m_a_k_e will use /lib/cpp.
-
- IIMMAAKKEEMMAAKKEE
- If defined, this should be a valid path to a make pro-
- gram, such as ``/usr/local/make''. By default, _i_m_a_k_e
- will use whatever _m_a_k_e program is found using
- _e_x_e_c_v_p(_3). This variable is only used if the ``-e''
- option is specified.
-
- AAUUTTHHOORR
- Todd Brunhoff, Tektronix and MIT Project Athena; Jim Fulton,
- MIT X Consortium
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- X Version 11 Release 5 4
-
-
-
-